home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / c / gcc261ud-c.lha / gnu / os-include / inline / utility.h < prev    next >
C/C++ Source or Header  |  1994-09-22  |  17KB  |  547 lines

  1. #ifndef _INLINE_UTILITY_H
  2. #define _INLINE_UTILITY_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL
  11. #define BASE_EXT_DECL0 extern struct UtilityBase * UtilityBase;
  12. #endif
  13. #ifndef BASE_PAR_DECL
  14. #define BASE_PAR_DECL
  15. #define BASE_PAR_DECL0 void
  16. #endif
  17. #ifndef BASE_NAME
  18. #define BASE_NAME UtilityBase
  19. #endif
  20.  
  21. BASE_EXT_DECL0
  22.  
  23. extern __inline BOOL 
  24. AddNamedObject (BASE_PAR_DECL struct NamedObject *nameSpace,struct NamedObject *object)
  25. {
  26.   BASE_EXT_DECL
  27.   register BOOL  _res  __asm("d0");
  28.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  29.   register struct NamedObject *a0 __asm("a0") = nameSpace;
  30.   register struct NamedObject *a1 __asm("a1") = object;
  31.   __asm __volatile ("jsr a6@(-0xde)"
  32.   : "=r" (_res)
  33.   : "r" (a6), "r" (a0), "r" (a1)
  34.   : "a0","a1","d0","d1", "memory");
  35.   return _res;
  36. }
  37. extern __inline struct NamedObject *
  38. AllocNamedObjectA (BASE_PAR_DECL STRPTR name,struct TagItem *tagList)
  39. {
  40.   BASE_EXT_DECL
  41.   register struct NamedObject * _res  __asm("d0");
  42.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  43.   register STRPTR a0 __asm("a0") = name;
  44.   register struct TagItem *a1 __asm("a1") = tagList;
  45.   __asm __volatile ("jsr a6@(-0xe4)"
  46.   : "=r" (_res)
  47.   : "r" (a6), "r" (a0), "r" (a1)
  48.   : "a0","a1","d0","d1", "memory");
  49.   return _res;
  50. }
  51. #ifndef NO_INLINE_STDARG
  52. #define AllocNamedObject(a0, tags...) \
  53.   ({ struct TagItem _tags[] = { tags }; AllocNamedObjectA ((a0), _tags); })
  54. #endif /* not NO_INLINE_STDARG */
  55. extern __inline struct TagItem *
  56. AllocateTagItems (BASE_PAR_DECL unsigned long numTags)
  57. {
  58.   BASE_EXT_DECL
  59.   register struct TagItem * _res  __asm("d0");
  60.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  61.   register unsigned long d0 __asm("d0") = numTags;
  62.   __asm __volatile ("jsr a6@(-0x42)"
  63.   : "=r" (_res)
  64.   : "r" (a6), "r" (d0)
  65.   : "a0","a1","d0","d1", "memory");
  66.   return _res;
  67. }
  68. extern __inline void 
  69. Amiga2Date (BASE_PAR_DECL unsigned long seconds,struct ClockData *result)
  70. {
  71.   BASE_EXT_DECL
  72.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  73.   register unsigned long d0 __asm("d0") = seconds;
  74.   register struct ClockData *a0 __asm("a0") = result;
  75.   __asm __volatile ("jsr a6@(-0x78)"
  76.   : /* no output */
  77.   : "r" (a6), "r" (d0), "r" (a0)
  78.   : "a0","a1","d0","d1", "memory");
  79. }
  80. extern __inline void 
  81. ApplyTagChanges (BASE_PAR_DECL struct TagItem *list,struct TagItem *changeList)
  82. {
  83.   BASE_EXT_DECL
  84.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  85.   register struct TagItem *a0 __asm("a0") = list;
  86.   register struct TagItem *a1 __asm("a1") = changeList;
  87.   __asm __volatile ("jsr a6@(-0xba)"
  88.   : /* no output */
  89.   : "r" (a6), "r" (a0), "r" (a1)
  90.   : "a0","a1","d0","d1", "memory");
  91. }
  92. extern __inline LONG 
  93. AttemptRemNamedObject (BASE_PAR_DECL struct NamedObject *object)
  94. {
  95.   BASE_EXT_DECL
  96.   register LONG  _res  __asm("d0");
  97.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  98.   register struct NamedObject *a0 __asm("a0") = object;
  99.   __asm __volatile ("jsr a6@(-0xea)"
  100.   : "=r" (_res)
  101.   : "r" (a6), "r" (a0)
  102.   : "a0","a1","d0","d1", "memory");
  103.   return _res;
  104. }
  105. extern __inline ULONG 
  106. CallHookPkt (BASE_PAR_DECL struct Hook *hook,APTR object,APTR paramPacket)
  107. {
  108.   BASE_EXT_DECL
  109.   register ULONG  _res  __asm("d0");
  110.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  111.   register struct Hook *a0 __asm("a0") = hook;
  112.   register APTR a2 __asm("a2") = object;
  113.   register APTR a1 __asm("a1") = paramPacket;
  114.   __asm __volatile ("jsr a6@(-0x66)"
  115.   : "=r" (_res)
  116.   : "r" (a6), "r" (a0), "r" (a2), "r" (a1)
  117.   : "a0","a1","a2","d0","d1", "memory");
  118.   return _res;
  119. }
  120. extern __inline ULONG 
  121. CheckDate (BASE_PAR_DECL struct ClockData *date)
  122. {
  123.   BASE_EXT_DECL
  124.   register ULONG  _res  __asm("d0");
  125.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  126.   register struct ClockData *a0 __asm("a0") = date;
  127.   __asm __volatile ("jsr a6@(-0x84)"
  128.   : "=r" (_res)
  129.   : "r" (a6), "r" (a0)
  130.   : "a0","a1","d0","d1", "memory");
  131.   return _res;
  132. }
  133. extern __inline struct TagItem *
  134. CloneTagItems (BASE_PAR_DECL struct TagItem *tagList)
  135. {
  136.   BASE_EXT_DECL
  137.   register struct TagItem * _res  __asm("d0");
  138.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  139.   register struct TagItem *a0 __asm("a0") = tagList;
  140.   __asm __volatile ("jsr a6@(-0x48)"
  141.   : "=r" (_res)
  142.   : "r" (a6), "r" (a0)
  143.   : "a0","a1","d0","d1", "memory");
  144.   return _res;
  145. }
  146. extern __inline ULONG 
  147. Date2Amiga (BASE_PAR_DECL struct ClockData *date)
  148. {
  149.   BASE_EXT_DECL
  150.   register ULONG  _res  __asm("d0");
  151.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  152.   register struct ClockData *a0 __asm("a0") = date;
  153.   __asm __volatile ("jsr a6@(-0x7e)"
  154.   : "=r" (_res)
  155.   : "r" (a6), "r" (a0)
  156.   : "a0","a1","d0","d1", "memory");
  157.   return _res;
  158. }
  159. extern __inline void 
  160. FilterTagChanges (BASE_PAR_DECL struct TagItem *changeList,struct TagItem *originalList,unsigned long apply)
  161. {
  162.   BASE_EXT_DECL
  163.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  164.   register struct TagItem *a0 __asm("a0") = changeList;
  165.   register struct TagItem *a1 __asm("a1") = originalList;
  166.   register unsigned long d0 __asm("d0") = apply;
  167.   __asm __volatile ("jsr a6@(-0x36)"
  168.   : /* no output */
  169.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  170.   : "a0","a1","d0","d1", "memory");
  171. }
  172. extern __inline ULONG 
  173. FilterTagItems (BASE_PAR_DECL struct TagItem *tagList,Tag *filterArray,unsigned long logic)
  174. {
  175.   BASE_EXT_DECL
  176.   register ULONG  _res  __asm("d0");
  177.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  178.   register struct TagItem *a0 __asm("a0") = tagList;
  179.   register Tag *a1 __asm("a1") = filterArray;
  180.   register unsigned long d0 __asm("d0") = logic;
  181.   __asm __volatile ("jsr a6@(-0x60)"
  182.   : "=r" (_res)
  183.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  184.   : "a0","a1","d0","d1", "memory");
  185.   return _res;
  186. }
  187. extern __inline struct NamedObject *
  188. FindNamedObject (BASE_PAR_DECL struct NamedObject *nameSpace,STRPTR name,struct NamedObject *lastObject)
  189. {
  190.   BASE_EXT_DECL
  191.   register struct NamedObject * _res  __asm("d0");
  192.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  193.   register struct NamedObject *a0 __asm("a0") = nameSpace;
  194.   register STRPTR a1 __asm("a1") = name;
  195.   register struct NamedObject *a2 __asm("a2") = lastObject;
  196.   __asm __volatile ("jsr a6@(-0xf0)"
  197.   : "=r" (_res)
  198.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  199.   : "a0","a1","a2","d0","d1", "memory");
  200.   return _res;
  201. }
  202. extern __inline struct TagItem *
  203. FindTagItem (BASE_PAR_DECL Tag tagVal,struct TagItem *tagList)
  204. {
  205.   BASE_EXT_DECL
  206.   register struct TagItem * _res  __asm("d0");
  207.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  208.   register Tag d0 __asm("d0") = tagVal;
  209.   register struct TagItem *a0 __asm("a0") = tagList;
  210.   __asm __volatile ("jsr a6@(-0x1e)"
  211.   : "=r" (_res)
  212.   : "r" (a6), "r" (d0), "r" (a0)
  213.   : "a0","a1","d0","d1", "memory");
  214.   return _res;
  215. }
  216. extern __inline void 
  217. FreeNamedObject (BASE_PAR_DECL struct NamedObject *object)
  218. {
  219.   BASE_EXT_DECL
  220.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  221.   register struct NamedObject *a0 __asm("a0") = object;
  222.   __asm __volatile ("jsr a6@(-0xf6)"
  223.   : /* no output */
  224.   : "r" (a6), "r" (a0)
  225.   : "a0","a1","d0","d1", "memory");
  226. }
  227. extern __inline void 
  228. FreeTagItems (BASE_PAR_DECL struct TagItem *tagList)
  229. {
  230.   BASE_EXT_DECL
  231.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  232.   register struct TagItem *a0 __asm("a0") = tagList;
  233.   __asm __volatile ("jsr a6@(-0x4e)"
  234.   : /* no output */
  235.   : "r" (a6), "r" (a0)
  236.   : "a0","a1","d0","d1", "memory");
  237. }
  238. extern __inline ULONG 
  239. GetTagData (BASE_PAR_DECL Tag tagValue,unsigned long defaultVal,struct TagItem *tagList)
  240. {
  241.   BASE_EXT_DECL
  242.   register ULONG  _res  __asm("d0");
  243.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  244.   register Tag d0 __asm("d0") = tagValue;
  245.   register unsigned long d1 __asm("d1") = defaultVal;
  246.   register struct TagItem *a0 __asm("a0") = tagList;
  247.   __asm __volatile ("jsr a6@(-0x24)"
  248.   : "=r" (_res)
  249.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  250.   : "a0","a1","d0","d1", "memory");
  251.   return _res;
  252. }
  253. extern __inline ULONG 
  254. GetUniqueID (BASE_PAR_DECL0)
  255. {
  256.   BASE_EXT_DECL
  257.   register ULONG  _res  __asm("d0");
  258.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  259.   __asm __volatile ("jsr a6@(-0x10e)"
  260.   : "=r" (_res)
  261.   : "r" (a6)
  262.   : "a0","a1","d0","d1", "memory");
  263.   return _res;
  264. }
  265. extern __inline void 
  266. MapTags (BASE_PAR_DECL struct TagItem *tagList,struct TagItem *mapList,unsigned long mapType)
  267. {
  268.   BASE_EXT_DECL
  269.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  270.   register struct TagItem *a0 __asm("a0") = tagList;
  271.   register struct TagItem *a1 __asm("a1") = mapList;
  272.   register unsigned long d0 __asm("d0") = mapType;
  273.   __asm __volatile ("jsr a6@(-0x3c)"
  274.   : /* no output */
  275.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  276.   : "a0","a1","d0","d1", "memory");
  277. }
  278. extern __inline STRPTR 
  279. NamedObjectName (BASE_PAR_DECL struct NamedObject *object)
  280. {
  281.   BASE_EXT_DECL
  282.   register STRPTR  _res  __asm("d0");
  283.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  284.   register struct NamedObject *a0 __asm("a0") = object;
  285.   __asm __volatile ("jsr a6@(-0xfc)"
  286.   : "=r" (_res)
  287.   : "r" (a6), "r" (a0)
  288.   : "a0","a1","d0","d1", "memory");
  289.   return _res;
  290. }
  291. extern __inline struct TagItem *
  292. NextTagItem (BASE_PAR_DECL struct TagItem **tagListPtr)
  293. {
  294.   BASE_EXT_DECL
  295.   register struct TagItem * _res  __asm("d0");
  296.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  297.   register struct TagItem **a0 __asm("a0") = tagListPtr;
  298.   __asm __volatile ("jsr a6@(-0x30)"
  299.   : "=r" (_res)
  300.   : "r" (a6), "r" (a0)
  301.   : "a0","a1","d0","d1", "memory");
  302.   return _res;
  303. }
  304. extern __inline ULONG 
  305. PackBoolTags (BASE_PAR_DECL unsigned long initialFlags,struct TagItem *tagList,struct TagItem *boolMap)
  306. {
  307.   BASE_EXT_DECL
  308.   register ULONG  _res  __asm("d0");
  309.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  310.   register unsigned long d0 __asm("d0") = initialFlags;
  311.   register struct TagItem *a0 __asm("a0") = tagList;
  312.   register struct TagItem *a1 __asm("a1") = boolMap;
  313.   __asm __volatile ("jsr a6@(-0x2a)"
  314.   : "=r" (_res)
  315.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  316.   : "a0","a1","d0","d1", "memory");
  317.   return _res;
  318. }
  319. extern __inline ULONG 
  320. PackStructureTags (BASE_PAR_DECL APTR pack,ULONG *packTable,struct TagItem *tagList)
  321. {
  322.   BASE_EXT_DECL
  323.   register ULONG  _res  __asm("d0");
  324.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  325.   register APTR a0 __asm("a0") = pack;
  326.   register ULONG *a1 __asm("a1") = packTable;
  327.   register struct TagItem *a2 __asm("a2") = tagList;
  328.   __asm __volatile ("jsr a6@(-0xd2)"
  329.   : "=r" (_res)
  330.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  331.   : "a0","a1","a2","d0","d1", "memory");
  332.   return _res;
  333. }
  334. extern __inline void 
  335. RefreshTagItemClones (BASE_PAR_DECL struct TagItem *clone,struct TagItem *original)
  336. {
  337.   BASE_EXT_DECL
  338.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  339.   register struct TagItem *a0 __asm("a0") = clone;
  340.   register struct TagItem *a1 __asm("a1") = original;
  341.   __asm __volatile ("jsr a6@(-0x54)"
  342.   : /* no output */
  343.   : "r" (a6), "r" (a0), "r" (a1)
  344.   : "a0","a1","d0","d1", "memory");
  345. }
  346. extern __inline void 
  347. ReleaseNamedObject (BASE_PAR_DECL struct NamedObject *object)
  348. {
  349.   BASE_EXT_DECL
  350.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  351.   register struct NamedObject *a0 __asm("a0") = object;
  352.   __asm __volatile ("jsr a6@(-0x102)"
  353.   : /* no output */
  354.   : "r" (a6), "r" (a0)
  355.   : "a0","a1","d0","d1", "memory");
  356. }
  357. extern __inline void 
  358. RemNamedObject (BASE_PAR_DECL struct NamedObject *object,struct Message *message)
  359. {
  360.   BASE_EXT_DECL
  361.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  362.   register struct NamedObject *a0 __asm("a0") = object;
  363.   register struct Message *a1 __asm("a1") = message;
  364.   __asm __volatile ("jsr a6@(-0x108)"
  365.   : /* no output */
  366.   : "r" (a6), "r" (a0), "r" (a1)
  367.   : "a0","a1","d0","d1", "memory");
  368. }
  369. extern __inline LONG 
  370. SDivMod32 (BASE_PAR_DECL long dividend,long divisor)
  371. {
  372.   BASE_EXT_DECL
  373.   register LONG  _res  __asm("d0");
  374.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  375.   register long d0 __asm("d0") = dividend;
  376.   register long d1 __asm("d1") = divisor;
  377.   __asm __volatile ("jsr a6@(-0x96)"
  378.   : "=r" (_res)
  379.   : "r" (a6), "r" (d0), "r" (d1)
  380.   : "a0","a1","d0","d1", "memory");
  381.   return _res;
  382. }
  383. extern __inline LONG 
  384. SMult32 (BASE_PAR_DECL long arg1,long arg2)
  385. {
  386.   BASE_EXT_DECL
  387.   register LONG  _res  __asm("d0");
  388.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  389.   register long d0 __asm("d0") = arg1;
  390.   register long d1 __asm("d1") = arg2;
  391.   __asm __volatile ("jsr a6@(-0x8a)"
  392.   : "=r" (_res)
  393.   : "r" (a6), "r" (d0), "r" (d1)
  394.   : "a0","a1","d0","d1", "memory");
  395.   return _res;
  396. }
  397. extern __inline LONG 
  398. SMult64 (BASE_PAR_DECL long arg1,long arg2)
  399. {
  400.   BASE_EXT_DECL
  401.   register LONG  _res  __asm("d0");
  402.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  403.   register long d0 __asm("d0") = arg1;
  404.   register long d1 __asm("d1") = arg2;
  405.   __asm __volatile ("jsr a6@(-0xc6)"
  406.   : "=r" (_res)
  407.   : "r" (a6), "r" (d0), "r" (d1)
  408.   : "a0","a1","d0","d1", "memory");
  409.   return _res;
  410. }
  411. extern __inline LONG 
  412. Stricmp (BASE_PAR_DECL STRPTR string1,STRPTR string2)
  413. {
  414.   BASE_EXT_DECL
  415.   register LONG  _res  __asm("d0");
  416.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  417.   register STRPTR a0 __asm("a0") = string1;
  418.   register STRPTR a1 __asm("a1") = string2;
  419.   __asm __volatile ("jsr a6@(-0xa2)"
  420.   : "=r" (_res)
  421.   : "r" (a6), "r" (a0), "r" (a1)
  422.   : "a0","a1","d0","d1", "memory");
  423.   return _res;
  424. }
  425. extern __inline LONG 
  426. Strnicmp (BASE_PAR_DECL STRPTR string1,STRPTR string2,long length)
  427. {
  428.   BASE_EXT_DECL
  429.   register LONG  _res  __asm("d0");
  430.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  431.   register STRPTR a0 __asm("a0") = string1;
  432.   register STRPTR a1 __asm("a1") = string2;
  433.   register long d0 __asm("d0") = length;
  434.   __asm __volatile ("jsr a6@(-0xa8)"
  435.   : "=r" (_res)
  436.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  437.   : "a0","a1","d0","d1", "memory");
  438.   return _res;
  439. }
  440. extern __inline BOOL 
  441. TagInArray (BASE_PAR_DECL Tag tagValue,Tag *tagArray)
  442. {
  443.   BASE_EXT_DECL
  444.   register BOOL  _res  __asm("d0");
  445.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  446.   register Tag d0 __asm("d0") = tagValue;
  447.   register Tag *a0 __asm("a0") = tagArray;
  448.   __asm __volatile ("jsr a6@(-0x5a)"
  449.   : "=r" (_res)
  450.   : "r" (a6), "r" (d0), "r" (a0)
  451.   : "a0","a1","d0","d1", "memory");
  452.   return _res;
  453. }
  454. extern __inline UBYTE 
  455. ToLower (BASE_PAR_DECL unsigned long character)
  456. {
  457.   BASE_EXT_DECL
  458.   register UBYTE  _res  __asm("d0");
  459.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  460.   register unsigned long d0 __asm("d0") = character;
  461.   __asm __volatile ("jsr a6@(-0xb4)"
  462.   : "=r" (_res)
  463.   : "r" (a6), "r" (d0)
  464.   : "a0","a1","d0","d1", "memory");
  465.   return _res;
  466. }
  467. extern __inline UBYTE 
  468. ToUpper (BASE_PAR_DECL unsigned long character)
  469. {
  470.   BASE_EXT_DECL
  471.   register UBYTE  _res  __asm("d0");
  472.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  473.   register unsigned long d0 __asm("d0") = character;
  474.   __asm __volatile ("jsr a6@(-0xae)"
  475.   : "=r" (_res)
  476.   : "r" (a6), "r" (d0)
  477.   : "a0","a1","d0","d1", "memory");
  478.   return _res;
  479. }
  480. extern __inline ULONG 
  481. UDivMod32 (BASE_PAR_DECL unsigned long dividend,unsigned long divisor)
  482. {
  483.   BASE_EXT_DECL
  484.   register ULONG  _res  __asm("d0");
  485.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  486.   register unsigned long d0 __asm("d0") = dividend;
  487.   register unsigned long d1 __asm("d1") = divisor;
  488.   __asm __volatile ("jsr a6@(-0x9c)"
  489.   : "=r" (_res)
  490.   : "r" (a6), "r" (d0), "r" (d1)
  491.   : "a0","a1","d0","d1", "memory");
  492.   return _res;
  493. }
  494. extern __inline ULONG 
  495. UMult32 (BASE_PAR_DECL unsigned long arg1,unsigned long arg2)
  496. {
  497.   BASE_EXT_DECL
  498.   register ULONG  _res  __asm("d0");
  499.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  500.   register unsigned long d0 __asm("d0") = arg1;
  501.   register unsigned long d1 __asm("d1") = arg2;
  502.   __asm __volatile ("jsr a6@(-0x90)"
  503.   : "=r" (_res)
  504.   : "r" (a6), "r" (d0), "r" (d1)
  505.   : "a0","a1","d0","d1", "memory");
  506.   return _res;
  507. }
  508. extern __inline ULONG 
  509. UMult64 (BASE_PAR_DECL unsigned long arg1,unsigned long arg2)
  510. {
  511.   BASE_EXT_DECL
  512.   register ULONG  _res  __asm("d0");
  513.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  514.   register unsigned long d0 __asm("d0") = arg1;
  515.   register unsigned long d1 __asm("d1") = arg2;
  516.   __asm __volatile ("jsr a6@(-0xcc)"
  517.   : "=r" (_res)
  518.   : "r" (a6), "r" (d0), "r" (d1)
  519.   : "a0","a1","d0","d1", "memory");
  520.   return _res;
  521. }
  522. extern __inline ULONG 
  523. UnpackStructureTags (BASE_PAR_DECL APTR pack,ULONG *packTable,struct TagItem *tagList)
  524. {
  525.   BASE_EXT_DECL
  526.   register ULONG  _res  __asm("d0");
  527.   register struct UtilityBase *a6 __asm("a6") = BASE_NAME;
  528.   register APTR a0 __asm("a0") = pack;
  529.   register ULONG *a1 __asm("a1") = packTable;
  530.   register struct TagItem *a2 __asm("a2") = tagList;
  531.   __asm __volatile ("jsr a6@(-0xd8)"
  532.   : "=r" (_res)
  533.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  534.   : "a0","a1","a2","d0","d1", "memory");
  535.   return _res;
  536. }
  537.  
  538. #undef BASE_EXT_DECL
  539. #undef BASE_EXT_DECL0
  540. #undef BASE_PAR_DECL
  541. #undef BASE_PAR_DECL0
  542. #undef BASE_NAME
  543.  
  544. __END_DECLS
  545.  
  546. #endif /* _INLINE_UTILITY_H */
  547.